package com.bombitarodriguez.dominio.personaje;

import java.io.IOException;
import java.util.Iterator;

import com.bombitarodriguez.dominio.Juego;
import com.bombitarodriguez.dominio.armas.Explosion;
import com.bombitarodriguez.dominio.armas.FactoryMolotov;
import com.bombitarodriguez.dominio.armas.FactoryToleTole;
import com.bombitarodriguez.dominio.obstaculosYArticulos.Articulo;
import com.bombitarodriguez.dominio.obstaculosYArticulos.ArticuloToleTole;
import com.bombitarodriguez.dominio.obstaculosYArticulos.Chala;
import com.bombitarodriguez.dominio.obstaculosYArticulos.Timer;
import com.bombitarodriguez.interfaces.ObjetoReaccionable;
import com.bombitarodriguez.vista.VistaBombita;

/**
 * 
 * @author Mauro
 *
 */
public class Bombita extends Personaje  {
	
	private Integer vida;
	
	
	public Boolean reaccionarCon(Chala chala) {
		// TODO Auto-generated method stub
		return null;
	}


	
	@Override
	public Boolean reaccionarCon(Bombita bombita) {
		return false;
	}



	@Override
	public Boolean reaccionarCon(Articulo articulo) {
		return articulo.reaccionarCon(this);
	}



	public Boolean reaccionarCon(Timer timer) {
		// TODO Auto-generated method stub
		return null;
	}


	public Bombita(Integer vida) {
		this.vida = vida;
		this.velocidad = Juego.VELOCIDAD_CAMINA;
		this.factoryArma = new FactoryMolotov();
		try {
			miVista = new VistaBombita(this);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	public Boolean reaccionarCon(Enemigo enemigo) {
		this.quitarVida();
		return true;
	}

	
	
	public void quitarVida() {
		vida -= 1;
	}

	
	

	public Integer getVida() {
		return vida;
	}

	public void setVida(Integer vida) {
		this.vida = vida;
	}
	
	public void activarBombaToleTole(){
		this.factoryArma = new FactoryToleTole();
	}
	public void activarChala(){
		this.velocidad = Juego.VELOCIDAD_CORRE;
	}
	
	public Boolean reaccionarCon(ArticuloToleTole articuloBombaToleTole){
		this.activarBombaToleTole();
		return true;
	}
	protected Boolean reaccionarConTodos(Iterator<ObjetoReaccionable> iterador) {
		Boolean permitePasar = true;
		while (iterador.hasNext()  && (permitePasar)) {
			permitePasar = iterador.next().reaccionarCon(this);
			
		}
		return permitePasar;
	}



	@Override
	public Boolean reaccionarCon(Explosion explosion) {
		this.quitarVida();
		return null;
	}



	public void activarTimer() {
		// TODO Auto-generated method stub
		
	}




	
}
